#pragma once

namespace LSH
{

typedef double TimeValue;

class Timer
{
public :
    Timer(void);
    ~Timer(void);

public:
    TimeValue start();
    TimeValue stop();

    void reset();
    
    TimeValue getTime();
    TimeValue getAbsoluteTime();

protected:
    void _initialize();
    LONGLONG _getTicks();
private:
    bool     _timerInitialized;
    bool     _usingQPF;
    LONGLONG _ticksPerSec;

    LONGLONG _baseTime;
    LONGLONG _stopTime;
};

} // LSH
